The present application relates to firmware and in particular describes systems and techniques relating to supporting legacy operating system booting in a legacy-free system.
Traditional firmware is machine instructions stored in non-volatile memory, which is typically read only memory (ROM) or flash memory. Thus, traditional firmware is a combination of software and hardware, although the term “firmware” is also used to refer to the software itself that is written with the intention of storing it in non-volatile memory. For example, on the Intel Architecture for Personal Computers (IA-PC), system firmware is commonly referred to as the BIOS (Basic Input/Output System), which is software alone.
A typical use for firmware is to provide machine instructions that control a data processing system when it is powered up from a shut down state, before volatile memory has been tested and configured. Firmware is also commonly used to reinitialize or reconfigure a data processing system after defined hardware events and/or to handle certain system level events like system interrupts.
The process of bringing a data processing system to its operating state from a powered down state is commonly known as bootstrapping, booting up, or the boot process. Bootstrapping typically begins with one or more processors in a data processing system. Each processor tests its internal components and interfaces. After the initial processor testing, initialization of system level resources commences. In multiprocessor systems, a single bootstrap processor (BSP) may be selected to handle initializing remaining processors and to handle the system level initialization. System level initialization typically includes procedures for checking memory integrity, identifying and initializing other resources in the data processing system, and loading an operating system (OS) into memory.
Loading an OS typically begins with loading a first stage OS loader from a specified location on a boot media. This first stage OS loader can then use basic hardware abstractions provided by the system firmware to load a more complex second stage OS loader. This process is continued until the OS is loaded and takes complete control of the data processing system.
The boot process is governed by an interface between the OS and the firmware, and firmware is typically closely tied to the processor architecture of the system for which the firmware is designed. Traditionally, the underlying processor architecture has been reflected in system level resources, which are initiated, configured and services by the firmware. A large number of resources (e.g., mass storage media controllers, peripheral devices) have been designed under this traditional paradigm and are thus dependent upon a legacy boot process. Because of these sunk costs, it may be desirable to have new legacy-free computing environments support such legacy boot processes.
Details of one or more embodiments are set forth in the accompanying drawings and the description below. Other features and advantages may be apparent from the description and drawings, and from the claims.